// Copyright (C) 2023 即时通讯网(52im.net) & Jack Jiang.
// The RainbowChat Project. All rights reserved.
// 
// 【本产品为著作权产品，合法授权后请放心使用，禁止外传！】
// 【本次授权给：<北京小羊驼科技有限公司>，授权编号：<NT231212144350>，代码指纹：<A.702363430.550>，技术对接人微信：<ID: wxid_wbyootvkdcgj22>】
// 【授权寄送：<收件：苏先生、地址：北京市大兴区北京密码西区6号楼1单元301、电话：18613885610、邮箱：bd@huiyuanxiang-inc.com>】
// 
// 【本系列产品在国家版权局的著作权登记信息如下】：
// 1）国家版权局登记名(简称)和权证号：RainbowChat    （证书号：软著登字第1220494号、登记号：2016SR041877）
// 2）国家版权局登记名(简称)和权证号：RainbowChat-Web（证书号：软著登字第3743440号、登记号：2019SR0322683）
// 3）国家版权局登记名(简称)和权证号：RainbowAV      （证书号：软著登字第2262004号、登记号：2017SR676720）
// 4）国家版权局登记名(简称)和权证号：MobileIMSDK-Web（证书号：软著登字第2262073号、登记号：2017SR676789）
// 5）国家版权局登记名(简称)和权证号：MobileIMSDK    （证书号：软著登字第1220581号、登记号：2016SR041964）
// * 著作权所有人：江顺/苏州网际时代信息科技有限公司
// 
// 【违法或违规使用投诉和举报方式】：
// 联系邮件：jack.jiang@52im.net
// 联系微信：hellojackjiang
// 联系QQ号：413980957
// 授权说明：http://www.52im.net/thread-1115-1-1.html
// 官方社区：http://www.52im.net
package com.x52im.rbchat.logic.register;

import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

import com.eva.android.widget.DataLoadableActivity;
import com.eva.android.ToolKits;
import com.eva.android.widget.DataLoadingAsyncTask;
import com.eva.android.widget.alert.AlertDialog;
import com.eva.framework.dto.DataFromServer;
import com.x52im.rbchat.R;
import com.x52im.rbchat.network.http.HttpRestHelper;

/**
 * “忘记密码”的Activity实现类.
 * 
 * @author tony.ma
 */
public class ForgetPassWordActivity extends DataLoadableActivity 
{
	private EditText emailEditText = null;
	private Button nextButton = null;
	
	/**
	 * 本方法由父类的onCreate()调用，子类可在此方法中实现自已的UI显示逻辑。
	 */
	@Override
	protected void initViews(Bundle savedInstanceState)
	{
		customeTitleBarResId = R.id.forget_password_title_bar;
		setContentView(R.layout.forget_password);
		
		emailEditText = (EditText) findViewById(R.id.forget_password_edit_text);
		nextButton = (Button) findViewById(R.id.forget_password_next_btn);
		
		setTitle(R.string.forget_password_title);
		super.initViews(savedInstanceState);
	}
	
	/**
	 * 本方法由父类的onCreate()调用，子类可在此方法中为各UI功能组件增加事件临听。
	 */
	@Override
	protected void initListeners()
	{
		nextButton.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v)
			{
				if(String.valueOf(emailEditText.getText()).trim().length()<=0)
				{
					emailEditText.setError($$(R.string.forget_password_mail_address));
					return;
				}
				if(!ToolKits.isEmail(String.valueOf(emailEditText.getText()).trim()))
				{
					emailEditText.setError($$(R.string.forget_password_mail_address_invalid));
					return;
				}
				
				// 发送密码重置邮件
				new SendInviteMail().execute();
			}
		});
	}

	//--------------------------------------------------------------------------------------------
	/**
	 * 从服务端查询数据并返回.
	 * 
	 * @param params loadData中传进来的参数，本类中该参数没有被用到
	 */
	@Override protected DataFromServer queryData(String... params)
	{
		return null;
	}
	//将已构造完成的完整的明细数据放入列表中显示出来
	@Override protected void refreshToView(Object dateToView)
	{
	}

	//--------------------------------------------------------------------------------------------
	/**
	 * <p>
	 * 使用异步线程实现，提升用户体验.
	 * </p>
	 */
	private class SendInviteMail extends DataLoadingAsyncTask<String, Integer, DataFromServer>
	{
		public SendInviteMail()
		{
			super(ForgetPassWordActivity.this, $$(R.string.general_send));
		}

		/**
		 * 
		 * @param parems 外界传进来的参数
		 * @return 查询结果，将传递给onPostExecute(..)方法
		 */
		@Override
		protected DataFromServer doInBackground(String... parems) 
		{
			return HttpRestHelper.submitForgotPasswordToServer(String.valueOf(emailEditText.getText()).trim());
		}

		@Override
		protected void onPostExecuteImpl(Object result)
		{
			//* 到了本方法里即意味着与服务端的交互成功了
			new AlertDialog.Builder(ForgetPassWordActivity.this)
			.setTitle(R.string.general_tip)  
			.setMessage(R.string.forget_password_send_request_message)
			.setNegativeButton(R.string.general_ok, new DialogInterface.OnClickListener(){
				@Override
				public void onClick(DialogInterface dialog, int which)
				{
					finish();
				}
			})  
			.show();  
		}
	}
}
